package com.atxiaodei.swagger.swaggerdemo.controller;

import com.atxiaodei.swagger.swaggerdemo.service.GoodService;
import com.atxiaodei.swagger.swaggerdemo.vo.Good;
import com.sun.istack.internal.NotNull;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author xiaodei
 * @date 2020/9/17
 **/
//标注与controller上，描述这整个controller是干嘛的
@Api(value = "商品信息查询", tags = "{商品API}")
@RestController
public class GoodController {

    @Resource
    GoodService service;

    //标注于方法上，说明一个方法的作用，value=‘具体描述’， notes=‘标题’
    @ApiOperation(value = "获取全部商品列表", notes = "全部商品列表，按ID排序")
    @GetMapping("/queryGoodsAll")
    public List<Good> queryGoodsAll(){
        return service.queryGoodsAll();
    }

    @ApiOperation(value = "根据id查询单个商品信息", notes = "查询单个商品信息")
    //如果方法有单个或者多个参数参数
    @ApiImplicitParams({
            //描述每一个参数具体的信息，
            //dataType： 参数的类型（java数据类型，可以是包装类）
            //paramType：参数传递方式是 url？的方式的话，使用query作为值
            // restfull使用了PathVariable的情况下，这个属性值应为path
            @ApiImplicitParam(name = "gid", value = "商品id", dataType = "int", paramType = "path", required = true)
    })
    @GetMapping("/selectByPrimaryKey/{gid}")
    public Good selectByPrimaryKey(@PathVariable("gid") @NotNull Integer gid){
        return service.selectByPrimaryKey(gid);
    }
}
